﻿#include "proc.h"
#include "sigar.h"
#include <string.h>
#include <windows.h>
#include <iostream>

proc::proc()
{

}

int proc::proc_test()
{
    getProcList();
    getProcStat();
    getProcCpu(3256);
    getProcMem(3256);
    return 0;
}

void proc::getProcList()
{
    sigar_t *sigar;
    sigar_open(&sigar);

    // 获取进程列表
    sigar_proc_list_t proclist;
    sigar_proc_list_get(sigar, &proclist);
    for (unsigned long i = 0; i < proclist.number; ++i)
    {
        sigar_pid_t proc;
        proc = proclist.data[i]; // 获取进程ID

        int a = 0;
    }


    sigar_proc_list_destroy(sigar, &proclist);

    sigar_close(sigar);
}

void proc::getProcStat()
{
    sigar_t *sigar;
    sigar_open(&sigar);
    sigar_proc_stat_t procstat;
    memset(&procstat, 0, sizeof(sigar_proc_stat_t));
    //获取系统进程状态
    sigar_proc_stat_get(sigar, &procstat);

    sigar_close(sigar);
}


void proc::getProcCpu(int pid)
{
    sigar_t *sigar;
    sigar_open(&sigar);
    sigar_proc_cpu_t proccpu;
    //获取指定进程的cpu信息
    sigar_proc_cpu_get(sigar, pid, &proccpu);
    sigar_close(sigar);
}

void proc::getProcMem(int pid)
{
    sigar_t *sigar;
    sigar_open(&sigar);
    sigar_proc_mem_t procmem;
    memset(&procmem, 0, sizeof(sigar_proc_mem_t));
    //获取指定进程的cpu信息
    sigar_proc_mem_get(sigar, pid, &procmem);
    sigar_close(sigar);
}
